# @Time    :2025/4/8 14:13

# 优化2：让服务器也在控制台输入回话内容
# 创建socket对象
import socket
import threading


# 处理请求的函数
def func(socket_client, client_info):
    try:
        while True:
            # 接收客户端发送的消息
            recv_data = socket_client.recv(1024)
            if not recv_data:  # 没有接收的话
                break
            print(f"客户端{client_info[0]}说：{recv_data.decode("utf-8")}")  # [0]是ip，[1]是端口号
            # 向客户端发送消息
            # socket_client.send("你好".encode('utf-8'))
            socket_client.send(input(f"服务器>>客户端{client_info[0]}说:").encode('utf-8'))
    except Exception as e:
        print(f"和客户端{client_info[0]}通信的时候发生了异常")
    finally:
        socket_client.close()  # 这里关闭没有什么意义，因为 while


def main():
    socket_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 绑定ip和端口号
    # socket_tcp.bind(("0.0.0.0", 9999))  # 127.0.0.1本机，若 是0.0.0.0 是不限制
    socket_tcp.bind(("192.168.34.28", 2222))  # 127.0.0.1本机，若 是0.0.0.0 是不限制
    # 设置监听 监听客户端的请求
    socket_tcp.listen(80)
    while True:
        # 等待客户端连接
        socket_client, client_info = socket_tcp.accept()
        # 为每一个连接的客户端 单独开一个线程进行处理
        threading.Thread(target=func, args=(socket_client, client_info)).start()

    # 关闭socket
    socket_tcp.close()


if __name__ == "__main__":
    main()
